package com.gxa.ssm251.proxy.jdk;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.util.Arrays;


//UserDao的反射控制器，用于给Proxy代理器的反射执行的方式
@Component
public class UserDaoInvocationHandler implements InvocationHandler {

    //代理对象：声明UserDao接口类型的对象
    @Autowired
    UserDao userDao;

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("前置增强");
        //代理对象去执行核心操作（insert）
//        Integer insert = userDao.insert();
        System.out.println("参数情况"+ Arrays.toString(args));

        Object invoke = method.invoke(userDao, args);
        System.out.println("后置增强");

        return invoke;
    }
}
